// IP查询工具
(function (window) {
  // 创建全局对象
  window.IpLocator = {
    // 查询当前IP
    showCurrentIp: function (elementId, apiUrl) {
      const element = document.getElementById(elementId);
      if (!element) {
        console.error("找不到目标元素：" + elementId);
        return;
      }

      console.log("正在查询当前IP...");
      fetch(apiUrl)
        .then((res) => res.text())
        .then((data) => {
          if (data) {
            element.innerText = data;
          }
        })
        .catch((err) => {
          console.error("查询失败：" + err.message);
        });
    },

    // 查询指定IP
    showIpInfo: function (ip, elementId, apiUrl) {
      const element = document.getElementById(elementId);
      if (!element) {
        console.error("找不到目标元素：" + elementId);
        return;
      }

      if (!ip) {
        console.error("请提供IP地址");
        return;
      }

      console.log("正在查询IP：" + ip);
      // 如果API URL中包含 {ip}，则替换为实际IP
      const url = apiUrl.replace("{ip}", ip);
      fetch(url)
        .then((res) => res.text())
        .then((data) => {
          if (data) {
            element.innerText = data;
          }
        })
        .catch((err) => {
          console.error("查询失败：" + err.message);
        });
    },

    // 自动插入IP信息到页面
    autoInsert: function () {
      // 查找所有带有data-ip-locator属性的元素
      document.querySelectorAll("[data-ip-locator]").forEach((element) => {
        const ip = element.getAttribute("data-ip");
        const apiUrl =
          element.getAttribute("data-api") ||
          "https://ip.jiazhen.wang/api/ip/format";

        if (ip) {
          // 如果指定了IP，查询指定IP
          this.showIpInfo(ip, element.id, apiUrl + "/{ip}");
        } else {
          // 否则查询当前IP
          this.showCurrentIp(element.id, apiUrl);
        }
      });
    },
  };

  // 当DOM加载完成后自动初始化
  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", function () {
      window.IpLocator.autoInsert();
    });
  } else {
    window.IpLocator.autoInsert();
  }
})(window);
